package com.prp.keywords_search_statistic;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class SearchServer {

	public static Cache cache = new Cache(1024);

	/**
	 * 当接收到一个客户端的请求后，开启一个搜索线程，线程对client的process方法进行回调。
	 * 
	 * @param userID
	 *            指的是调用该方法的用户的ID
	 */
	public static void service(String keyword, ResultProcessor client,
			Integer userID, Integer start, Integer count) {
		SearchThread thread = new SearchThread(cache, keyword, client, userID,
				start, count);
		thread.start();
	}

	/**
	 * 设置定时器，每天凌晨三点钟重新load一下 好像没有必要？？？？？？？？？？？？？？
	 */
	@SuppressWarnings("deprecation")
	public void startTimer() {

		System.out.println("开始加载定时执行任务的servlet.........");
		Timer timer = new Timer();

		MyTimeTask mtt = new MyTimeTask();

		Calendar c = Calendar.getInstance();
		// 从当天的凌晨３点开始提醒，每天提醒一次
		Date date;
		date = c.getTime();
		date.setHours(03);
		date.setMinutes(0);
		date.setSeconds(0);
		// 每隔一天执行一次
		timer.scheduleAtFixedRate(mtt, date, 24 * 60 * 60 * 1000);
		// 程序启动后1秒执行，每一分钟执行一次
		// timer.scheduleAtFixedRate(mtt, 1000, 60 * 1000);
	}

}

class MyTimeTask extends TimerTask {
	public void run() {
		System.out.println("定时执行任务...............");
		SearchServer.cache.loadData();
	}
}
